// 区域算法 给一个基准值，分割数组，将数组分割成小于基准值的数组和大于基准值的数组 可用于 echarts 折线图不同颜色覆盖
function findSubArrays(arr, num) {
  let result = []; //  新建一个空栈
  let stack = [];
  let status = 0; // -1 代表小于数组， 0 代表初始值， 1 代表大于数组
  for (let index = 0; index < arr.length; index++) {
    // 如果栈内是空栈，则直接将当前元素放入栈内
    if (stack.length === 0) {
      stack.push(arr[index]); //   给 status 赋值 如果小于基准值，则赋值为 -1， 如果大于基准值，则赋值为 1
      if (arr[index] < num) {
        status = -1;
      } else {
        status = 1;
      }
      continue;
    } // 设置一个变量，用来判断当前元素是否大于基准值
    let isBigger = arr[index] >= num ? 1 : -1; // 如果两个值不相等
    // 如果两个值相等
    if (status === isBigger) {
      // 则将当前元素放入 stack 内
      stack.push(arr[index]);
    } // 如果已经到了循环末尾 则将 stack 内的元素放入 result 内
    if (status !== isBigger) {
      // 判断尾部
      arr[index - 1] != num && stack.push(num);
      // 则将 stack 内的元素放入 result 内 并清空 stack
      result.push(JSON.parse(JSON.stringify(stack)));
      stack = [arr[index]];
      // 判断头部
      arr[index] != num && stack.unshift(num);
      status = isBigger;
    }
    if (index === arr.length - 1) {
      result.push(JSON.parse(JSON.stringify(stack)));
    }
  }
  return result;
}

let arr = [2, 3, 4, 5, 6, 7, 2, 3, 4, 5];
let num = 3;
let result = findSubArrays(arr, num);

//返回 [2,3,4,5,6,7,2,3,4,5] , 3  ->   [[2,3] [3,4,5,6,7,3],[3,2,3],[3,4,5]]
console.log(result);
